package com.hq.common.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtil {
    private static final String w="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
    private static final String n="0123456789";
    //判断源字符串是否有值，空引号也算没值
    public static boolean hasText(String str){
        return str!=null&&!"".equals(str);
    }


    //判断源字符串是否有值，空引号和空格也算没值
    public static boolean hasTextAndSpace(String str){
        return str!=null&&!"".equals(str.trim());
    }
    // trim()  java 基础常用类中trim 删除空白符(去掉前后空格)


    //判断是否为手机号码
    // Pattern.compile    Macher.maches     字符串.maches
    public static boolean isPhone(String phone){
        String reg_phone="^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9]|16[3|6])\\d{8}$";
        return hasTextAndSpace(phone)&&phone.matches(reg_phone);
    }

    //    判断是否为电子邮箱
    public static boolean isEmail(String email){
        String reg_phone="^\\w+@\\w+(.com.cn|.com|.net)$";
        return hasTextAndSpace(email)&&email.matches(reg_phone);
    }

    //    判断是否为电子邮箱
    // *    +     ？
    public static boolean isLetter(String letter){
        String reg_phone="^[a-zA-Z]+$";
        return hasTextAndSpace(letter)&&letter.matches(reg_phone);
    }

    //获取n位随机英文字符串
    // 1：长度由参数定  2：内容都是字母并且是随机的
    // ASCII 码  65-90    97-122
    public static String getLetter(int length){
        StringBuffer sb=new StringBuffer();
        // 随机数字 意味着是  w字符串的任意下标
        for(int i=0;i<length;i++){
            int index=(int)(Math.random()*w.length());
            char c = w.charAt(index);
            sb.append(c);
        }
        return sb.toString();
    }

    //获取n位随机英文和数字字符串
    public static String getLetterAndNum(int length){
        StringBuffer sb=new StringBuffer();
        // 随机数字 意味着是  w字符串的任意下标
        for(int i=0;i<length;i++){
            int index=(int)(Math.random()*(w+n).length());
            char c = (w+n).charAt(index);
            sb.append(c);
        }
        return sb.toString();
    }


    public static String getChinese(int length){
        StringBuffer sb=new StringBuffer();
        int start = Integer.parseInt("4e00",16);
        int end = Integer.parseInt("9fa5",16);
        //   int num=(int)(Math.random()*(最大值-最小值+1)+最小值)
        for(int i=0;i<length;i++){
            int num=(int)(Math.random()*(end-start+1)+start);
            sb.append((char)num);
        }
        return sb.toString();

    }



}

